package com.ikkong.common.interceptor;

import java.util.Date;

import com.jfinal.aop.Interceptor;
import com.jfinal.aop.Invocation;
import com.jfinal.core.Controller;
import com.jfinal.kit.HashKit;
import com.jfinal.kit.JsonKit;
import com.jfinal.kit.StrKit;

public class ApiInterceptor implements Interceptor {

	/**接口 返回值  错误码 K */
    public static final String ERRJSON_ERRCODE = "errcode";
    /**接口 返回值  错误信息 K */
    public static final String ERRJSON_ERRMSG  = "errmsg";
    /**接口 返回值  数据 K */
    public static final String ERRJSON_DATA  = "data";
    /**接口 调用数据时 使用的 K */
    public static final String CHECK_MASK  = "mask";
    
	@Override
	public void intercept(Invocation inv) {
		// TODO Auto-generated method stub
		Controller controller=inv.getController();
		String mask=controller.getPara(CHECK_MASK);
		if(isMask(mask)){
			try {
				inv.invoke();
			} catch (Exception e) {
				// TODO: handle exception
				inv.getController().renderJson(errJson(1,e.getMessage()));
			}
		}else{
			inv.getController().renderJson(errJson(401,"mask验证失败"));
		}
		
	}

	/**判断 密钥*/
	private static boolean isMask(String mask){
		if(StrKit.notBlank(mask))
			return getMask().equals(mask.trim());
		return false;
	}
	/***获取通行码
     * 临时做一下 校验, 自行改造
     */
	public static String getMask(){
		String mask=(new Date().getTime()+"").substring(0,8)+"_cmo@jusiboxin.com";
		return HashKit.md5(mask);
	}
	
	/***获取通行码
     */
	public static String getMaskKit(){
		return "&"+CHECK_MASK+"="+getMask();
	}
	
	public static String errJson(Integer errcode,String errmsg){
		return "{\"errcode\":" + errcode + ",\"errmsg\":\"" + errmsg + "\"}";
	}
	public static String errJson(Object data) {
        return "{\"errcode\":0,\"errmsg\":\"OK\",\"data\":" + (JsonKit.toJson(data)) + "}";
    }
    
    public static String errJson() {
        return "{\"errcode\":0,\"errmsg\":\"OK\"}";
    }
}
